package com.huterox.todoscheduler.core.global;

import com.huterox.todoscheduler.core.wapper.TodoListWrapper;

import java.io.Serializable;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

/**
 * 这里存放的是一个清单的模板，后期清单工厂通过这个清单模板去生成这个
 * 需要运行的对象，然后的话，执行器将这个对象进行执行
 *
 * 这里的话，它的数据结构是这样的：
 * {
 *     清单名字：{
 *          类型，等等信息
 *          执行方法：{
 *              0：需要执行的第一个方法，
 *              1：需要执行的第二个方法
 *          }
 *     }
 * }
 * */

public class TodoListTemplateMap implements Serializable {

    private static volatile TodoListTemplateMap INSTANCE;
    private Map<String, TodoListWrapper> map;

    private TodoListTemplateMap() {
        map = new ConcurrentHashMap<>();
    }
    public static TodoListTemplateMap getInstance() {
        if (INSTANCE == null) {
            synchronized (TodoListTemplateMap.class) {
                if (INSTANCE == null) {
                    INSTANCE = new TodoListTemplateMap();
                }
            }
        }
        return INSTANCE;
    }

    public Integer getSize(){
        return this.map.size();
    }

    public void put(String key, TodoListWrapper value) {
        map.put(key, value);
    }

    public TodoListWrapper get(String key) {
        return map.get(key);
    }

    public boolean containKey(String key){
        return map.containsKey(key);
    }
}